#include "my_output_wave.h"



#define HF_ONE_WAVE_PERIOD  (25)


#define HF_WAVE_WORK_TIME   (1000)
#define EMS_WAVE_WORK_TIME  (2000)
#define ONE_CYCLE_TIME      (HF_WAVE_WORK_TIME + EMS_WAVE_WORK_TIME)

typedef struct 
{
    int HF_duty;
    int HF_period;
    int one_cycle_run_cnt;
    /* data */
}OUTPUT_WAVE_t;

OUTPUT_WAVE_t output_wave_data;


/**************
 * 高周波 共持续1s， ems 共持续2s这样的时序进行切换
 * 
 *  高周波细分： 单个周期25ms， duty 可以氛围 10~ 15， 每2档增加一个duty
 *  ems ：进行频率切换 9k~20khz
 * 
 * 
*/


/***********
 * 每1ms进入一次
 * 
 * */ 
void my_output_ctrl(void)
{
    static uint8_t last_sta = 0;
    output_wave_data.one_cycle_run_cnt ++;

    if(sys_data.sta == SLEEP_STA){
        if(last_sta != SLEEP_STA){
            hf_power_off();
            my_hf_wave_stop();
            hf_output_disable();

            ems_playlod1_stop();
            ems_output_disable();
            ems_power_off();
            last_sta = SLEEP_STA;
        }
        return;
    }
    // begin hf wave
    if(output_wave_data.one_cycle_run_cnt == 1){
        printf("HF WAVE START ----\r\n");
        hf_power_on();
        my_hf_wave_start();
        hf_output_enable();

        if(last_sta != get_sys_state()){
            last_sta = get_sys_state();
        }
    }
    else if(output_wave_data.one_cycle_run_cnt < HF_WAVE_WORK_TIME){

        switch(get_sys_level()){
            case LEVEL_0:{
                output_wave_data.HF_duty = 5;
                break;
            }
            case LEVEL_1:
            case LEVEL_2:{
                output_wave_data.HF_duty = 10;
                break;
            }
            case LEVEL_3:
            case LEVEL_4:{
                output_wave_data.HF_duty = 11;
                break;
            }
            case LEVEL_5:
            case LEVEL_6:{
                output_wave_data.HF_duty = 12;
                break;
            }
            case LEVEL_7:
            case LEVEL_8:{
                output_wave_data.HF_duty = 13;
                break;
            }

            case LEVEL_9:
            case LEVEL_10:{
                output_wave_data.HF_duty = 14;
                break;
            }
            default:{
                output_wave_data.HF_duty = 0;
            }
        }

        // if(output_wave_data.one_cycle_run_cnt%HF_ONE_WAVE_PERIOD == output_wave_data.HF_duty){
        //     my_hf_wave_stop();
        //     hf_output_disable();
        // }
        // else
         if(0 == output_wave_data.one_cycle_run_cnt%HF_ONE_WAVE_PERIOD){
            hf_power_on();
            my_hf_wave_start();
            hf_output_enable();
        }


    }
    // // begin ems_wave
    // else if(output_wave_data.one_cycle_run_cnt == HF_WAVE_WORK_TIME){
    //     hf_output_disable();
    //     my_hf_wave_stop();
    //     printf(" EMS_wave start\r\n");
    //     ems_freq_select_9khz();
    //     ems_playlod1_restar();
    //     ems_power_on();
    //     ems_output_enable();

    // }
    // else if((output_wave_data.one_cycle_run_cnt > HF_WAVE_WORK_TIME)&&(output_wave_data.one_cycle_run_cnt < ONE_CYCLE_TIME))
    // {
    //         // ems freq change ，等于某个值时切换频率
    //         if(output_wave_data.one_cycle_run_cnt == HF_WAVE_WORK_TIME + 1500){
    //             ems_freq_select_15khz();
    //         }
    //         else if(output_wave_data.one_cycle_run_cnt == HF_WAVE_WORK_TIME + 1000){
    //             ems_playlod1_stop();
    //         }
    //         else if(output_wave_data.one_cycle_run_cnt == HF_WAVE_WORK_TIME + 800){
    //             ems_freq_select_12khz();
    //         }
    //         else if(output_wave_data.one_cycle_run_cnt == HF_WAVE_WORK_TIME + 500){
    //             ems_playlod1_stop();
    //         }
    // }
    // else if(output_wave_data.one_cycle_run_cnt == ONE_CYCLE_TIME){
    else if(output_wave_data.one_cycle_run_cnt > HF_WAVE_WORK_TIME + 10){
        output_wave_data.one_cycle_run_cnt = 0;
        ems_playlod1_stop();
        ems_output_disable();
    }

}
